Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Опять про поиск по MySQL (nik0la)
Author Message
nik0la
Заглянувший



Joined: 06 Sep 2007
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Thu Sep 06, 2007 9:30 am (написано за 5 минут 15 секунд)
   Post subject: Опять про поиск по MySQL
Reply with quote

Имеется такой запрос:
Code (php): скопировать код в буфер обмена
$result = mysql_query (www.php.net/mysql_query)("SELECT * FROM bbs WHERE message LIKE '%". preg_replace (www.php.net/preg_replace)("/ /", "%' AND message LIKE '%", $stxt). "%' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage);
где message - TEXT

В принципе все работает.
Но если к примеру ввести слово которого нет в базе, то всеравно что-то выводится, хотя искомого слова в результатах нет и оно не входит ни в одно другое слово.
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Sep 06, 2007 8:17 pm (спустя 10 часов 46 минут; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

nik0la
Вы сам еткст запроса выведите (-;
классик почти так wrote:
Мне кажется, preg_replace тут неуместен!
Back to top
View user's profile Send private message
nik0la
Заглянувший



Joined: 06 Sep 2007
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Fri Sep 07, 2007 11:13 am (спустя 14 часов 56 минут; написано за 58 секунд)
   Post subject:
Reply with quote

поспешил я немного запостив на форум :)

в общем так сейчас работает как нужно
Code (php): скопировать код в буфер обмена
$result = mysql_query (www.php.net/mysql_query)("SELECT *, IF (message REGEXP '".$stxt."', 3*10, 0) + IF (message REGEXP '".str_replace(" ", "', 9, 0) + IF (message REGEXP '", $stxt)."', 9, 0) + IF (msgtitle REGEXP '".$stxt."', 3*10, 0) + IF (msgtitle REGEXP '".str_replace(" ", "', 9, 0) + IF (msgtitle REGEXP '", $stxt)."', 9, 0) AS relev FROM `bbs` WHERE ((`message` REGEXP '".str_replace(" ", "' OR `message` REGEXP '", $stxt)."' OR `msgtitle` REGEXP '".str_replace(" ", "' OR `msgtitle` REGEXP '", $stxt)."') AND date > '$ct') AND type='$st' ORDER BY relev DESC,id DESC LIMIT ".$start_pos.", ".$perpage);
Back to top
View user's profile Send private message
nik0la
Заглянувший



Joined: 06 Sep 2007
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Tue Jan 15, 2008 6:19 am (спустя 4 месяца 7 дней 19 часов 5 минут; написано за 6 минут 25 секунд)
   Post subject:
Reply with quote

У меня новая проблема.

Запрос такого вида
Code (php): скопировать код в буфер обмена
$result = @mysql_query (www.php.net/mysql_query)("SELECT * FROM `bbs` WHERE ((`message` REGEXP '".str_replace(" ", "' OR `message` REGEXP '", $stxt)."))");
работает, но слишком сильно грузит БД (хостер ругается)

Упростил его до такого вида:
Code (php): скопировать код в буфер обмена
$result = @mysql_query (www.php.net/mysql_query)("SELECT * FROM `bbs` WHERE (MATCH (message) AGAINST ('".$stxt."'))");
Вроде тоже работает, но не ищет по некоторым запросам. Например: 392-175 или 111-250/400, хотя 1126-150-Ц ищет

Записей в базе - 24998

message - text

Индексы:
PRIMARY - PRIMARY - 24998 - id
message - FULLTEXT - 1 - message
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Tue Jan 15, 2008 7:58 am (спустя 1 час 39 минут; написано за 19 секунд)
   Post subject:
Reply with quote

nik0la
Вероятно, слова длиной меньше, чем 4 символа не индексируются?
Back to top
View user's profile Send private message Send e-mail
nik0la
Заглянувший



Joined: 06 Sep 2007
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Tue Jan 15, 2008 8:23 am (спустя 24 минуты; написано за 1 минуту)
   Post subject:
Reply with quote

Юрий, а не подскажите где это можно посмотреть?

UPD
Опять поторопился спрашивать :)
В Я. нашел ссылку hттp://www.weblibrary.biz/mysql/funkcii/funkcii-text/nastroika-poiska
как я понял копать нужно ft_min_word__len и ft_max_word_ len
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Tue Jan 15, 2008 5:26 pm (спустя 9 часов 3 минуты; написано за 50 секунд)
   Post subject:
Reply with quote

nik0la
Копать в эту сторону стоит лишь только в том случае, если Вас не устраивает такой результат, и Вы знаете, какие последствия понесёт изменение умолчательных настроек
Back to top
View user's profile Send private message Send e-mail
nik0la
Заглянувший



Joined: 06 Sep 2007
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Wed Jan 16, 2008 6:49 am (спустя 13 часов 23 минуты; написано за 26 секунд)
   Post subject:
Reply with quote

ok. понял. спасибо за консультацию.
Back to top
View user's profile Send private message
Raul7
Участник форума



Joined: 30 Jan 2008
Posts: 24
Карма: -4
   поощрить/наказать


PostPosted: Wed Jan 30, 2008 5:09 pm (спустя 14 дней 10 часов 19 минут)
   Post subject:
Reply with quote

nik0la wrote:
работает, но слишком сильно грузит БД (хостер ругается)
ты вместо запроса всех полеи запроси только нужные.например $result = @mysql_query ("Select user,pass,midmlr,level,user_ip,mobile,user_soft from users where id='".$id."'"); но не $result = @mysql_query ("Select * from users where id='".$id."'");
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Jan 30, 2008 9:16 pm (спустя 4 часа 6 минут; написано за 10 секунд)
   Post subject:
Reply with quote

Raul7 wrote:
@mysql_query
собаку-то зачем?
Back to top
View user's profile Send private message
Raul7
Участник форума



Joined: 30 Jan 2008
Posts: 24
Карма: -4
   поощрить/наказать


PostPosted: Wed Jan 30, 2008 9:37 pm (спустя 20 минут; написано за 45 секунд)
   Post subject:
Reply with quote

например если возникнет ошибка, без собачки она на экране появится, а с собачкой типа игнор всех ошибок, которые могут возникнуть при этом запросе
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9986
   поощрить/наказать


PostPosted: Thu Jan 31, 2008 12:18 pm (спустя 14 часов 41 минуту; написано за 1 минуту 21 секунду)
   Post subject:
Reply with quote

Raul7:
1. Здесь принято общение «на Вы» — forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html
2. Про «собачек» обязательно прочтите вот это — phpfaq.ru/debug2
Back to top
View user's profile Send private message
Raul7
Участник форума



Joined: 30 Jan 2008
Posts: 24
Карма: -4
   поощрить/наказать


PostPosted: Thu Jan 31, 2008 11:31 pm (спустя 11 часов 12 минут; написано за 17 секунд)
   Post subject:
Reply with quote

bæv уже прочел.спасибо
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML